Avoid warnings
authorMatthias Clasen <mclasen@redhat.com>
Fri, 9 Mar 2018 07:13:13 +0000 (02:13 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 9 Mar 2018 07:13:13 +0000 (02:13 -0500)
When generating introspection data, we instantiate types without
calling gtk_init, so make sure that extension points are registered
before the type is trying to implement them.

gtk/gtkimcontextbroadway.c
gtk/gtkimcontextime.c
gtk/gtkimcontextquartz.c
gtk/gtkimcontextsimple.c
gtk/gtkimcontextwayland.c
gtk/gtkimcontextxim.c
gtk/gtkimmodule.c
gtk/gtkimmoduleprivate.h

index e8e459ada243e428085e3d39fa81b0fdd2ce0e75..5ad20101258f27b6db2603f983ac7be11d2def50 100644 (file)
@@ -23,7 +23,7 @@
 
 #include "gtk/gtkimcontextbroadway.h"
 #include "gtk/gtkintl.h"
-#include "gtk/gtkimmodule.h"
+#include "gtk/gtkimmoduleprivate.h"
 
 #include "gdk/broadway/gdkbroadway.h"
 
@@ -43,6 +43,7 @@ typedef struct _GtkIMContextBroadwayClass
 } GtkIMContextBroadwayClass;
 
 G_DEFINE_TYPE_WITH_CODE (GtkIMContextBroadway, gtk_im_context_broadway, GTK_TYPE_IM_CONTEXT_SIMPLE,
+                         gtk_im_module_ensure_extension_point ();
                          g_io_extension_point_implement (GTK_IM_MODULE_EXTENSION_POINT_NAME,
                                                          g_define_type_id,
                                                          "broadway",
index 7ba1483c29972355c9e231802bae24c2fd89e6ea..146cc129db84b7beadfc6a8bfbe55d267d5b93e4 100644 (file)
@@ -28,6 +28,7 @@
 #endif
 
 #include "gtkimcontextime.h"
+#include "gtkimmoduleprivate.h"
 
 #include "imm-extra.h"
 
@@ -129,6 +130,7 @@ static void cb_client_widget_hierarchy_changed  (GtkWidget       *widget,
 #define GTK_IM_CONTEXT_IME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_IM_CONTEXT_IME, GtkIMContextIME))
 
 G_DEFINE_TYPE_WITH_CODE (GtkIMContextIME, gtk_im_context_ime, GTK_TYPE_IM_CONTEXT,
+                        gtk_im_module_ensure_extension_point ();
                          g_io_extension_point_implement (GTK_IM_MODULE_EXTENSION_POINT_NAME,
                                                          g_define_type_id,
                                                          "ime",
index 2c950fc86055e0ab3fe03404909d1884dcecb627..14637de186d2f17267f502bcc75c8e1025e68322 100644 (file)
@@ -23,7 +23,7 @@
 
 #include "gtk/gtkimcontextquartz.h"
 #include "gtk/gtkintl.h"
-#include "gtk/gtkimmodule.h"
+#include "gtk/gtkimmoduleprivate.h"
 
 #include "gdk/quartz/gdkquartz.h"
 #include "gdk/quartz/GdkQuartzView.h"
@@ -51,6 +51,7 @@ typedef struct _GtkIMContextQuartzClass
 } GtkIMContextQuartzClass;
 
 G_DEFINE_TYPE_WITH_CODE (GtkIMContextQuartz, gtk_im_context_quartz, GTK_TYPE_IM_CONTEXT,
+                        gtk_im_module_ensure_extension_point ();
                          g_io_extension_point_implement (GTK_IM_MODULE_EXTENSION_POINT_NAME,
                                                          g_define_type_id,
                                                          "quartz",
index 38ec5f24c26a0516af58fd3f34a587d82c3cf0a5..fe11e7c332257af47997b497de482f3d3ee10f53 100644 (file)
@@ -40,7 +40,7 @@
 #include "gtkdebug.h"
 #include "gtkintl.h"
 #include "gtkcomposetable.h"
-#include "gtkimmodule.h"
+#include "gtkimmoduleprivate.h"
 
 #include "gtkimcontextsimpleprivate.h"
 #include "gtkimcontextsimpleseqs.h"
@@ -167,6 +167,7 @@ static void     gtk_im_context_simple_set_client_widget  (GtkIMContext
 
 G_DEFINE_TYPE_WITH_CODE (GtkIMContextSimple, gtk_im_context_simple, GTK_TYPE_IM_CONTEXT,
                          G_ADD_PRIVATE (GtkIMContextSimple)
+                         gtk_im_module_ensure_extension_point ();
                          g_io_extension_point_implement (GTK_IM_MODULE_EXTENSION_POINT_NAME,
                                                          g_define_type_id,
                                                          "gtk-im-context-simple",
index be1159b09437fea867ca2d339b5e59624b77eb87..af195581c8ca1300de527178f73787673e4f8154 100644 (file)
@@ -22,7 +22,7 @@
 
 #include "gtk/gtkimcontextwayland.h"
 #include "gtk/gtkintl.h"
-#include "gtk/gtkimmodule.h"
+#include "gtk/gtkimmoduleprivate.h"
 
 #include "gdk/wayland/gdkwayland.h"
 #include "gtk-text-input-client-protocol.h"
@@ -71,6 +71,7 @@ struct _GtkIMContextWayland
 };
 
 G_DEFINE_TYPE_WITH_CODE (GtkIMContextWayland, gtk_im_context_wayland, GTK_TYPE_IM_CONTEXT_SIMPLE,
+                        gtk_im_module_ensure_extension_point ();
                          g_io_extension_point_implement (GTK_IM_MODULE_EXTENSION_POINT_NAME,
                                                          g_define_type_id,
                                                          "wayland",
index caaaf0328054df52e266e8772b57b623c9d19ef0..23c4f0f7b37d119dc8e0c661ac0dd431756d8902 100644 (file)
@@ -21,7 +21,7 @@
 #include <stdlib.h>
 
 #include "gtkimcontextxim.h"
-#include "gtkimmodule.h"
+#include "gtkimmoduleprivate.h"
 
 #include "gtk/gtkintl.h"
 
@@ -145,6 +145,7 @@ static void           xim_info_display_closed (GdkDisplay *display,
                                               GtkXIMInfo *info);
 
 G_DEFINE_TYPE_WITH_CODE (GtkIMContextXIM, gtk_im_context_xim, GTK_TYPE_IM_CONTEXT,
+                        gtk_im_module_ensure_extension_point ();
                          g_io_extension_point_implement (GTK_IM_MODULE_EXTENSION_POINT_NAME,
                                                          g_define_type_id,
                                                          "xim",
index 5e45bd8cfb3f4142072210ff7b4d083dd5e21ac9..0c9955342331fa52198546e3821aacfd88ecbf9a 100644 (file)
@@ -237,12 +237,13 @@ _gtk_im_module_get_default_context_id (void)
 }
 
 void
-gtk_im_modules_init (void)
+gtk_im_module_ensure_extension_point (void)
 {
   GIOExtensionPoint *ep;
-  GIOModuleScope *scope;
-  char **paths;
-  int i;
+  static gboolean registered = FALSE;
+
+  if (registered)
+    return;
 
   GTK_NOTE (MODULES,
             g_print ("Registering extension point %s\n", GTK_IM_MODULE_EXTENSION_POINT_NAME));
@@ -250,6 +251,18 @@ gtk_im_modules_init (void)
   ep = g_io_extension_point_register (GTK_IM_MODULE_EXTENSION_POINT_NAME);
   g_io_extension_point_set_required_type (ep, GTK_TYPE_IM_CONTEXT);
 
+  registered = TRUE;
+}
+
+void
+gtk_im_modules_init (void)
+{
+  GIOModuleScope *scope;
+  char **paths;
+  int i;
+
+  gtk_im_module_ensure_extension_point ();
+
   g_type_ensure (gtk_im_context_simple_get_type ());
 #ifdef GDK_WINDOWING_X11
   g_type_ensure (gtk_im_context_xim_get_type ());
@@ -282,8 +295,10 @@ gtk_im_modules_init (void)
 
   if (GTK_DEBUG_CHECK (MODULES))
     {
+      GIOExtensionPoint *ep;
       GList *list, *l;
 
+      ep = g_io_extension_point_lookup (GTK_IM_MODULE_EXTENSION_POINT_NAME);
       list = g_io_extension_point_get_extensions (ep);
       for (l = list; l; l = l->next)
         {
index 8fcc013dc0f93a7e29c381f79783eca843970f73..ed469891d067c60480ac867cca110bd8808c27c8 100644 (file)
 
 #include <gdk/gdk.h>
 #include "gtkimcontext.h"
+#include "gtkimmodule.h"
 
 G_BEGIN_DECLS
 
-GtkIMContext * _gtk_im_module_create                 (const gchar              *context_id);
+void           gtk_im_module_ensure_extension_point  (void);
+GtkIMContext * _gtk_im_module_create                 (const char *context_id);
 const gchar  * _gtk_im_module_get_default_context_id (void);
 
 G_END_DECLS